from django.db import models
import datetime
class CaseDemo9User(models.Model):
    useronlyID=models.AutoField(primary_key=True,verbose_name=u"用户ID")
    uuid=models.CharField(max_length=50,verbose_name=u"UUID",default="123456789")# 未来可以用作唯一标识
    username=models.CharField(max_length=20,verbose_name=u"用户名",default="123")# 用户名要保持唯一
    realname=models.CharField(max_length=20,verbose_name=u"真实姓名",default="123")
    card=models.CharField(max_length=20,verbose_name=u"身份证号",default="123")
    password=models.CharField(max_length=20,verbose_name=u"密码")
    sex=models.CharField(max_length=2,verbose_name=u"性别",default="男")
    age=models.IntegerField(verbose_name=u"年龄",default=20)
    email=models.EmailField(verbose_name=u"邮箱",default="123456789@qq.com")
    phone=models.CharField(max_length=11,verbose_name=u"手机号",default="12345678901")
    vxinfo=models.CharField(max_length=20,verbose_name=u"微信号",default="123456789")
    address=models.CharField(max_length=50,verbose_name=u"地址",default="北京市")
    status=models.IntegerField(verbose_name=u"状态",default=1)# 0-禁用 1-启用
    role=models.IntegerField(verbose_name=u"角色",default=2)
    descrption=models.CharField(max_length=100,verbose_name="个性签名",default="我是一个个性签名哦")
    create_time=models.DateTimeField(auto_now_add=True,verbose_name=u"创建时间")
    update_time=models.DateTimeField(auto_now=True,verbose_name=u"更新时间")
    class Meta:
        db_table = 'CaseDemo9User'

class CaseDemo9UserRole(models.Model):
    user=models.ForeignKey(CaseDemo9User,on_delete=models.CASCADE,verbose_name=u"用户")
    '''ForeignKey 外键，关联到另外一个模型 CaseDemo9User，也就是一个用户。
        on_delete=models.CASCADE：意思是
        如果关联的用户被删除了，那么这个角色记录也一并被删除。（级联删除）'''
    role=models.IntegerField(verbose_name=u"角色")# 0-普通 1-管理员 2-超级管理员
    create_time=models.DateTimeField(auto_now_add=True,verbose_name=u"创建时间")
    update_time=models.DateTimeField(auto_now=True,verbose_name=u"更新时间")
    class Meta:
        db_table = 'CaseDemo9UserRole'

class Menu(models.Model):
    """
    菜单模型，支持树形结构（自关联 parent 字段）
    """
    name = models.CharField(max_length=100)  # 菜单名称
    path = models.CharField(max_length=255)  # 菜单路径
    icon = models.CharField(max_length=100, blank=True, null=True)  # 图标，可选
    requires_auth = models.BooleanField(default=True)  # 是否需要权限认证
    create_date = models.DateTimeField()  # 移除 auto_now_add，允许自定义时间
    description = models.TextField(blank=True, null=True)  # 描述，可选
    components = models.CharField(max_length=100, blank=True, null=True)  # 组件路径，可选
    permissions = models.JSONField(default=list)  # 权限列表，如 ['edit', 'delete']
    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
    # 自关联字段，表示父菜单；related_name='children'方便反向查询子菜单
    class Meta:
        db_table = 'CaseDemo9Menu'